public class MyDate {
    //默认的初始值  就地初始化  定义的同时初始化
   // public int year=1989;
   // public int month=1;
    //public int day=1;

    public int year;
    public int month;
    public int day;

   // public boolean flg;

    //public  String str;

    public  MyDate(){
        this(1900,1,1);//意思是调用当前对象的其他构造方法，语法规定必须写在最前面（第一行）
        System.out.println("不带参数的构造方法");
    }
    //这两个构造方法之间构成了重载
    //方法名相同，参数列表不同（个数类型顺序），返回值是不要求
    public  MyDate(int year,int month,int day) {
        this.year=year;
        this.month=month;
        this.day=day;

        System.out.println("带有3个参数的构造方法！");
    }




   /* public  void setDate(int y,int m,int d) {
        year = y;
        month = m;
        day = d;
    }*/

   /* public  void setDate(int year,int month,int day) {
        year = year;
        month = month;
        day = day;
    }//局部变量，形参自己给自己赋值。如何区分？如下
    */
    public  void setDate(MyDate this ,int year,int month,int day) {
        this.year = year;
        this.month = month;
        this.day = day;
    }//加了this，就是当前对象的年月日
    //谁调用当前的这个方法，谁就是this对象
    //可以访问成员变量，成员方法，构造方法
    public  void printDate() {
        System.out.println("year: "+this.year
        +" month: "+this.month+ " day: "+this.day);

        //this.test();


    }

    public void test() {
        System.out.println("test()");

    }

    @Override
    public String toString() {
        return "MyDate{" +
                "year=" + year +
                ", month=" + month +
                ", day=" + day +
                '}';
    }
}
